using System;
using System.Collections.Generic;
using SheLife.Domain.Common;

namespace SheLife.Domain.Entities
{
    /// <summary>
    /// 膳食记录实体
    /// </summary>
    public class DietRecord : BaseEntity
    {
        public int UserId { get; set; }
        public DateTime RecordDate { get; set; }
        public string MealType { get; set; } // 餐次：早餐、午餐、晚餐、加餐
        public string FoodName { get; set; } // 食物名称
        public decimal Quantity { get; set; } // 食用量
        public string Unit { get; set; } // 单位：克、毫升、个等
        public decimal Calories { get; set; } // 卡路里
        public string FoodImage { get; set; } // 食物图片URL
        public string Barcode { get; set; } // 条形码
        public bool IsRecommended { get; set; } // 是否为推荐食物
        public string Notes { get; set; } // 备注

        // 导航属性
        public virtual User User { get; set; }
        public virtual ICollection<DietNutrient> DietNutrients { get; set; }
    }

    /// <summary>
    /// 膳食营养成分实体
    /// </summary>
    public class DietNutrient : BaseEntity
    {
        public int DietRecordId { get; set; }
        public string NutrientName { get; set; } // 营养成分名称：蛋白质、脂肪、碳水化合物等
        public decimal Amount { get; set; } // 含量
        public string Unit { get; set; } // 单位
        public decimal DailyValuePercentage { get; set; } // 每日推荐摄入量百分比

        // 导航属性
        public virtual DietRecord DietRecord { get; set; }
    }

    /// <summary>
    /// 食谱实体
    /// </summary>
    public class Recipe : BaseEntity
    {
        public string RecipeName { get; set; } // 食谱名称
        public string Description { get; set; } // 描述
        public string Category { get; set; } // 分类：经期食谱、备孕食谱、孕期食谱等
        public string Season { get; set; } // 适用季节：春、夏、秋、冬
        public string Region { get; set; } // 适用地区
        public string ImageUrl { get; set; } // 图片URL
        public decimal Calories { get; set; } // 总卡路里
        public int PrepTime { get; set; } // 准备时间（分钟）
        public int CookTime { get; set; } // 烹饪时间（分钟）
        public int Servings { get; set; } // 份数
        public string Difficulty { get; set; } // 难度：简单、中等、困难
        public string Tags { get; set; } // 标签
        public bool IsRecommended { get; set; } // 是否为推荐食谱
        public int ViewCount { get; set; } // 查看次数
        public int LikeCount { get; set; } // 点赞次数

        // 导航属性
        public virtual ICollection<RecipeIngredient> RecipeIngredients { get; set; }
        public virtual ICollection<RecipeStep> RecipeSteps { get; set; }
        public virtual ICollection<RecipeNutrient> RecipeNutrients { get; set; }
        public virtual ICollection<UserRecipe> UserRecipes { get; set; }
    }

    /// <summary>
    /// 食谱食材实体
    /// </summary>
    public class RecipeIngredient : BaseEntity
    {
        public int RecipeId { get; set; }
        public string IngredientName { get; set; } // 食材名称
        public decimal Quantity { get; set; } // 用量
        public string Unit { get; set; } // 单位
        public string Notes { get; set; } // 备注
        public int SortOrder { get; set; } // 排序

        // 导航属性
        public virtual Recipe Recipe { get; set; }
    }

    /// <summary>
    /// 食谱步骤实体
    /// </summary>
    public class RecipeStep : BaseEntity
    {
        public int RecipeId { get; set; }
        public int StepNumber { get; set; } // 步骤编号
        public string Description { get; set; } // 步骤描述
        public string ImageUrl { get; set; } // 步骤图片URL
        public int Duration { get; set; } // 预计时间（秒）
        public string Tips { get; set; } // 小贴士

        // 导航属性
        public virtual Recipe Recipe { get; set; }
    }

    /// <summary>
    /// 食谱营养成分实体
    /// </summary>
    public class RecipeNutrient : BaseEntity
    {
        public int RecipeId { get; set; }
        public string NutrientName { get; set; } // 营养成分名称
        public decimal Amount { get; set; } // 含量
        public string Unit { get; set; } // 单位
        public decimal DailyValuePercentage { get; set; } // 每日推荐摄入量百分比

        // 导航属性
        public virtual Recipe Recipe { get; set; }
    }

    /// <summary>
    /// 用户食谱关联实体
    /// </summary>
    public class UserRecipe : BaseEntity
    {
        public int UserId { get; set; }
        public int RecipeId { get; set; }
        public bool IsFavorite { get; set; } // 是否收藏
        public int Rating { get; set; } // 评分：1-5
        public string Review { get; set; } // 评论
        public DateTime CookedDate { get; set; } // 烹饪日期
        public string Notes { get; set; } // 备注

        // 导航属性
        public virtual User User { get; set; }
        public virtual Recipe Recipe { get; set; }
    }
}